﻿Ext.define('ListaPrecios', {
    extend: 'ABMBase',
    Title: 'Formulario ABM Lista de Precios',
    Model: 'Model.Lista',
    defaultPropertySort: 'nombre',
    storeListaEntidad: CreateForeignStore('storeListaEntidad', 'Model.ListaEntidad'),
    storeEntidad: CreateForeignStore('storeEntidad', 'Model.Comercios'),
    storeEntidadProveedor: CreateForeignStore('storeEntidadProveedor', 'Model.Entidad'),
    storeCategEnt: CreateFirstEmptyStore('storeCategEnt', 'Model.CategEnt'),
    listeners: {
        Creando: function (rcd) {
            rcd.record.set('id_lista', activeInstance.GetNum('LISTA'));
            rcd.record.set('id_entidad', activeInstance.EjecutarEnServidor('ObtenerEntidadOperador'));
            Ext.StoreMgr.get('storeListaEntidad').reload({
                params: { filter: '[{ "type": "numeric", "comparison": "eq", "value": -1, "field": "id_lista"}]' }
            });
        },
        Editando: function (rcd) {
            Ext.StoreMgr.get('storeListaEntidad').reload({
                params: { filter: '[{ "type": "numeric", "comparison": "eq", "value": ' + rcd.record.get('id_lista') + ', "field": "id_lista"}]' }
            });
        },
        Actualizado: function (rcd) {
            var entidadesAsociadas = '';
            Ext.StoreMgr.get('storeListaEntidad').each(function (r) {
                entidadesAsociadas += r.get('id_entidad') + ',';
            });
            entidadesAsociadas = entidadesAsociadas.substring(0, entidadesAsociadas.length - 1);
            activeInstance.EjecutarEnServidor('GuardarListaEntidades', { id_lista: rcd.record.get('id_lista'), entidadesAsociadas: entidadesAsociadas });
        }
    },
    WindowPanel: [{
        xtype: 'fieldset',
        title: 'General',
        collapsible: true,
        items: [{
            xtype: 'container',
            frame: true,
            layout: 'column',
            items: [{
                xtype: 'fieldset',
                columnWidth: 0.5,
                border: false,
                items: [{
                    xtype: 'textfield',
                    fieldLabel: 'Identificador',
                    name: 'id_lista',
                    maxLength: 10,
                    isPrimaryKey: true,
                    enforceMaxLength: true,
                    allowBlank: false
                }, {
                    xtype: 'textfield',
                    fieldLabel: 'Código',
                    name: 'nombre',
                    maxLength: 50,
                    enforceMaxLength: true,
                    allowBlank: false
                }, {
                    xtype: 'datefield',
                    fieldLabel: 'Fecha de Inicio Vigencia',
                    name: 'fecha_vigencia',
                    allowBlank: false
                }]
            }, {
                xtype: 'fieldset',
                columnWidth: 0.5,
                border: false,
                items: [{
                    xtype: 'combobox',
                    fieldLabel: 'Entidad Proveedor',
                    queryMode: 'local',
                    displayField: 'nombre',
                    valueField: 'id_entidad',
                    editable: true,
                    forceSelection: true,
                    store: Ext.StoreMgr.get('storeEntidadProveedor'),
                    allowBlank: false,
                    name: 'id_entidad'
                }]
            }]
        }]
    }, {
        xtype: 'fieldset',
        title: 'Detalle',
        collapsible: true,
        items: [{
            id: 'grdEntidadAsignada',
            xtype: 'grid',
            title: 'Entidad Asignada',
            height: 150,
            store: Ext.StoreMgr.get('storeListaEntidad'),
            name: 'entidadAsignada',
            plugins: [Ext.create('Ext.grid.plugin.CellEditing', {
                clicksToEdit: 1
            })],
            tbar: [{
                xtype: 'combobox',
                id: 'cbLPCategEntidad',
                queryMode: 'local',
                displayField: 'descripcion',
                valueField: 'id_categ_entidad',
                editable: true,
                forceSelection: true,
                store: Ext.StoreMgr.get('storeCategEnt'),
                name: 'id_categ_entidad',
                fieldLabel: 'Categoría de Entidad Comercio',
                listeners: {
                    select: function (cbo, rcd, eOpt) {
                        if (cbo.getValue() != null) {
                            var resEntidades = activeInstance.EjecutarEnServidor('ObtenerEntidadesPorCategoria', { CategoriaId: rcd[0].get('id_categ_entidad') });
                            var objEntidades = Ext.JSON.decode(resEntidades).App_entidad;
                            Ext.each(objEntidades, function (obj) {
                                if (Ext.isEmpty(Ext.StoreMgr.get('storeListaEntidad').getById(obj.id_entidad))) {
                                    var model = Ext.ModelManager.getModel('Model.ListaEntidad');
                                    var record = new model();
                                    record.set('id_entidad', obj.id_entidad);
                                    Ext.StoreMgr.get('storeListaEntidad').add(record);
                                }
                            });
                            Ext.getCmp('grdEntidadAsignada').getView().refresh();
                        }
                    }
                }
            }, {
                xtype: 'combobox',
                id: 'cbLPEntidad',
                queryMode: 'local',
                displayField: 'nombre',
                valueField: 'id_entidad',
                editable: true,
                forceSelection: true,
                store: Ext.StoreMgr.get('storeEntidad'),
                fieldLabel: 'Entidad',
                listeners: {
                    select: function (cbo, rcd, eOpt) {
                        if (Ext.isEmpty(Ext.StoreMgr.get('storeListaEntidad').getById(rcd[0].get('id_entidad')))) {
                            var model = Ext.ModelManager.getModel('Model.ListaEntidad');
                            var record = new model();
                            record.set('id_entidad', rcd[0].get('id_entidad'));
                            Ext.StoreMgr.get('storeListaEntidad').add(record);
                        }
                    }
                }
            }],
            listeners: {
                edit: function () {
                    if (Ext.getCmp('mainGrid').getSelectionModel().getSelection().length > 0)
                        Ext.getCmp('mainGrid').getSelectionModel().getSelection()[0].setDirty();
                }
            },
            columns: [{
                header: 'Entidad',
                dataIndex: 'id_entidad',
                renderer: ForeignStoreRenderer('storeEntidad', 'nombre')
            }, {
                xtype: 'actioncolumn',
                width: 50,
                menuDisabled: true,
                items: [{
                    iconCls: 'boton-Borrar',
                    tooltip: 'Borrar',
                    handler: function (grid, rowIndex, colIndex) {
                        Ext.StoreMgr.get('storeListaEntidad').remove(Ext.StoreMgr.get('storeListaEntidad').getAt(rowIndex));
                    }
                }]
            }]
        }]
    }],
    Columns: [
            { text: 'Identificador', dataIndex: 'id_lista', filter: true },
            { text: 'Nombre', dataIndex: 'nombre', filter: true },
            { xtype: 'datecolumn', text: 'Fecha de Inicio de Vigencia', dataIndex: 'fecha_vigencia', filter: true },
            {
                header: 'Entidad',
                dataIndex: 'id_entidad',
                filter: CreateListFilter('nombre', 'id_entidad', 'storeEntidad'),
                renderer: ForeignStoreRenderer('storeEntidadProveedor', 'nombre')
            }, {
                text: 'Categoría Entidad',
                dataIndex: 'id_categ_entidad',
                filter: CreateListFilter('descripcion', 'id_categ_entidad', 'storeCategEnt'),
                renderer: ForeignStoreRenderer('storeCategEnt', 'descripcion')
            },
            { text: 'Usuario', dataIndex: 'id_usuario', filter: true }
        ]
});
